---
title: Contributing to c15t.com
lastModified: 2025-04-17
---

We love your input! We want to make contributing to c15t.com as easy and transparent as possible, whether it's:

- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer

## 📜 License

By contributing to Consent Management (c15t), you agree that your contributions will be licensed under the GNU General Public License v3.0 (GPL-3.0). This is a copyleft license that ensures the software and all derivatives remain free and open source.

[Read the full license here](/docs/oss/license)

## 🏠 House Rules

### Before You Start

- Check existing [issues](https://github.com/c15t/c15t/issues) and [PRs](https://github.com/c15t/c15t/pulls) first
- **Always create an issue before starting development**
- Follow our PR template carefully

### Issue Approval Process

We use the `needs-approval` label to manage contributions:

#### For Contributors

- 🚫 **Needs Approval First:**
  - New features
  - Large-scale refactoring
  - Architecture changes
  - *Wait for a c15t.com team member to remove the `needs-approval` label*

- ✅ **Can Start Immediately:**
  - Bug fixes
  - Documentation updates
  - Performance improvements
  - Security fixes
  - Tests

## Development Process

We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.

### 🤖 Automated Workflows

We leverage several automated workflows to ensure code quality:

1. **Code Quality**
   - Formatting: Biome automatically formats code
   - Types: TypeScript checks run on every PR
   - Tests: Vitest runs the test suite
   - Build: Turbo ensures everything builds correctly

2. **Dependencies**
   - Renovate keeps dependencies up to date
   - PNPM manages our packages
   - Changesets handles our versioning

3. **Pull Requests**
   - PR titles are checked for semantic versioning
   - Automated code review for common issues
   - Required checks must pass before merging

## Getting Started

1. Fork the repo and create your branch from `main`:

   ```sh
   git clone https://github.com/your-username/c15t.git
   cd c15t
   git switch -c my-feature
   ```

2. Install dependencies:

   ```sh
   corepack enable  # Sets up PNPM
   pnpm install     # Installs dependencies
   ```

3. Make your changes and ensure the following pass:

   ```sh
   pnpm fmt         # Format code
   pnpm test        # Run tests
   pnpm build       # Build packages
   ```

## Pull Request Process

1. **Create an Issue First**
   - For features/refactoring: Wait for approval (needs-approval label)
   - For bugs/docs: Can start work immediately

2. **Make Your Changes**
   - Follow our coding standards (enforced by Biome)
   - Add tests for new functionality
   - Update documentation as needed

3. **Create Pull Request**
   - Use our PR template
   - Link the related issue
   - Add screenshots for UI changes
   - Describe your changes clearly

4. **Automated Checks**
   The following will run automatically:
   - Code formatting (Biome)
   - Type checking (TypeScript)
   - Tests (Vitest)
   - Build verification (Turbo)
   - Dependency checks (Renovate)
   - PR title format
   - Issue linking

5. **Review Process**
   - Maintainers will review your code
   - Address any requested changes
   - Once approved, it will be merged

## Release Process

Releases are automated through our CI/CD pipeline:

1. Merge to `main` triggers version check
2. Changesets determines version bump
3. New version is published to npm
4. GitHub release is created
5. Documentation is updated

## Development Guidelines

### Code Style

We use Biome for formatting and linting. Configuration is in `biome.jsonc`.

### Commits

Follow [Conventional Commits](https://www.conventionalcommits.org/):

- `feat:` New features
- `fix:` Bug fixes
- `docs:` Documentation
- `chore:` Maintenance
- `refactor:` Code changes
- `test:` Test changes

### Testing

- Write tests for new features
- Update tests for changes
- Run `pnpm test` locally

### Documentation

- Update docs with new features
- Include code examples
- Update README if needed

## Questions?

Don't hesitate to:

- Open an issue
- Start a discussion
- Ask in comments

## Important License Note

c15t.com is licensed under the GNU General Public License v3.0 (GPL-3.0). By contributing to this project, you agree to license your contributions under the same license. This means:

- ✅ You can use the code commercially
- ✅ You can modify the code
- ✅ You can distribute the code
- ✅ You can use the code privately
- ✅ You can use the code for patent purposes

But you must:

- 📢 Disclose source
- 📄 Include original license
- 📝 State changes
- 🔄 Use same license
- 📋 Include copyright notice

[Learn more about GPL-3.0](https://choosealicense.com/licenses/gpl-3.0/)
